package com.project.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.common.core.page.PageDomain;
import com.common.core.page.TableDataInfo;
import com.project.domain.bo.DmProjectTypeBo;
import com.project.domain.entity.DmProjectType;
import com.project.domain.entity.SyntProject;

import java.util.List;


/**
 * 项目分类列Service接口
 *
 * @author ruoyi
 * @date 2025-02-08
 */
public interface IProjectTypeService extends IService<DmProjectType> {
    /**
     * 查询项目分类列
     *
     * @param id 项目分类列主键
     * @return 项目分类列
     */
    public DmProjectType selectDmProjectTypeByID(String id);

    /**
     * 查询项目分类列列表
     *
     * @param code 项目编号
     * @param name 项目分类
     * @param code   级别
     * @param classId   项目性质
     * @return 项目分类列集合
     */
    public List<DmProjectType> selectDmProjectTypeList(String code,String name, String projectLevelId,String classId);

    /**
     * 较上一个方法 多了数量统计
     * @param code
     * @param name
     * @param projectLevelId
     * @param classId
     * @param page
     * @return
     */
    public TableDataInfo selectDmProjectTypeList_haveCount(String code, String name, String projectLevelId, String classId, PageDomain page);


    /**
     * 新增项目分类列
     *
     * @param dmProjectType 项目分类列
     * @return 结果 100 -> 分类编号已存在
     *             200  -> 新增加成功
     *             500  -> 新增失败
     */
    public int insertDmProjectType(DmProjectTypeBo dmProjectType);

    /**
     * 修改项目分类列
     *
     * @param dmProjectType 项目分类列
     * @return 结果
     */
    public Boolean updateDmProjectType(DmProjectTypeBo dmProjectType);


    /**
     * 删除项目分类列信息
     *
     * @param id 项目分类列主键
     * @return 结果
     */
    public Boolean deleteDmProjectTypeByID(String id);


    /**
     * 获取最大的科目前缀
     * @param projectClass  项目性质
     * @param typeLevel  层级分类
     * @param upCode  父级code
     * @return
     */
    public String getMaxPrefix(String projectClass,String typeLevel,String upCode);

    public List<SyntProject> getUseProjectList(String id,Integer pageNum,Integer pageSize);
}
